#ifndef _CAMERA_H_
#define _CAMERA_H_

#include "../stdafx.h"
#include "ForwardDeclarations.h"
#include <boost/smart_ptr/shared_ptr.hpp>

// #include "entity.h"

class CCamera
{
private:
	CDynamicEntityPtr _ent;
public:
	void attach(CDynamicEntityPtr entity){_ent = entity;};
	void force_detach(){_ent.~shared_ptr();};
	void update(int dx, int dy)
	{
		/*
		if (CMouseManager::getInstance()->changed(TRUE)) return;
		CMouseManager::getInstance()->getMouse(dx, dy);
		if (dx == 0 && dy == 0) return;

		CQuaternion qhorz;
		CQuaternion qvert;
		//		float theta = -((float)dx) * sensitivity * PIOVER180 * GLOB_TIME_FRAC, phi = ((float)dy) * sensitivity * PIOVER180 * GLOB_TIME_FRAC;
		float theta = -((float)dx) * sensitivity * PIOVER180, phi = ((float)dy) * sensitivity * PIOVER180;

		qhorz.w = cos(theta / 2.0f);
		qhorz.x = 0.0f;
		qhorz.y = sin(theta / 2.0f);
		qhorz.z = 0.0f;

		qvert.w = cos(phi / 2.0f);
		qvert.x = sin(phi / 2.0f);
		qvert.y = 0.0f;
		qvert.z = 0.0f;

		if (_ent)
			_ent->setRot((qvert * qhorz).normalize());
		*/
	};
	void draw()
	{
/*
		CVector3 vect, pos;
		float angle;

		_ent->getRot().getAxisAngle(vect, angle);
		glRotatef(angle / PIOVER180, vect.x, vect.y, vect.z);
		pos = _ent->getPos();
		glTranslatef(-pos.x, -pos.y, -pos.z);
*/
	}

};

class CFreeLookCamera : public CCamera
{

};

class CFollowCamera : public CCamera
{

};

#endif // _CAMERA_H_